package edu.mercer.sse.error;

import edu.mercer.sse.annotations.Fulfills;

/**
 * 
 * Runtime Unchecked Exception.<p>
 *
 */

public class CriticalException extends RuntimeException 

implements VisitableErrorLogging<String, ErrorLoggingVisitor>

{
	private static final long serialVersionUID = 5775543603149913825L;

	/**
	 * Create new custom unchecked exception: CriticalException.<p>
	 */

	public CriticalException()
	{
		super();

	}//constructor


	/**
	 * Create new custom unchecked exception: CriticalException.<p>
	 * 
	 * @param messageIn - String descriptive message to include when creating
	 *      this unchecked exception
	 */

	public CriticalException( final String messageIn )
	{
		super( messageIn );

	}//constructor


	/**
	 * Create new custom unchecked exception: CriticalException.<p>
	 * 
	 * @param exceptionIn - Exception, checked to be wrapped in this 
	 *      unchecked exception
	 */

	public CriticalException( final Exception exceptionIn )
	{
		super( exceptionIn );

	}//constructor


	/**
	 * Create new custom unchecked exception: CriticalException.<p>
	 * 
	 * @param throwableIn - Throwable to be wrapped in this unchecked 
	 *      exception
	 */

	public CriticalException( final Throwable throwableIn )
	{
		super( throwableIn );

	}//constructor	


	@Fulfills("VisitableErrorLogging")
	public String accept( final ErrorLoggingVisitor visitor ) 
	{
		return visitor.visit( this );

	}//method    

	
}//class
